/*
  学习目标：类型约束 - 指定更精准的类型范围
  作用：指定更精准的类型 
    1. 添加约束 - 给泛型添加约束
    2. 指定更精准的范围，🔔常用在参数类型比较单一的时候
*/

function filter<T>(value: T[]): T[] {
  if (!value.length) {
    return [];
  }
  // ... 省略筛选的逻辑
  return value;
}

filter([]);
// 就是要传入数组，非数组都报错
filter('a');
filter({ length: 123 });
filter(false);
